#ifndef __BASIC_PGSQLC_H__
#define __BASIC_PGSQLC_H__

#include <basic/misc.h>

__BEGIN_DECLS

#if 0
#define PG_OK                   0    
#define PG_ERROR                -10000    
#define PG_COL_NOT_SUPPORTED    -10001    
#define PG_NO_DATA_FOUND        6    
#define PG_UNIQUE_VIOLATE       64    

/*
 * 数据库环境初始化
 */
extern int  /* 0:成功 -1:失败，连接数错误 */
pgc_init();

/*
 * 数据库环境清理
 */
extern int
pgc_clean();

/*
 * 完整数据库连接
 */
extern int  /* SQLCODE: MYSQL系统错误，常用见MY_OK等定义 */
pgc_connect_complete_ex(
        int conn_index,             /* [IN] 连接索引 */
        char *dbuser,               /* [IN] 用户 */
        char *dbpasswd,             /* [IN] 密码 */
        char *database,             /* [IN] 数据库 */
        char *host                  /* [IN] 宿主 */
        );
#define pgc_connect_complete(_dbuser,_dbpasswd,_database,_host)  \
pgc_connect_complete_ex(0,_dbuser,_dbpasswd,_database,_host)

/*
 * 断开数据库连接
 */
extern int  /* SQLCODE:MYSQL系统错误，常用见MY_OK等定义 */
pgc_disconnect_ex(
        int conn_index              /* [IN] 连接索引 */
        );
#define pgc_disconnect() pgc_disconnect_ex(0)

/*
 *开始事务
 */
extern int  /* SQLCODE:PGSQL系统错误，常用见PG_OK等定义 */
pgc_begin_ex(
        int conn_index              /* [IN] 连接索引 */
        );
#define pgc_begin() pgc_begin_ex(0)

/*
 * 提交事务
 */
extern int  /* SQLCODE:PGSQL系统错误，常用见PG_OK等定义 */
pgc_commit_ex(
        int conn_index              /* [IN] 连接索引 */
        );
#define pgc_commit() pgc_commit_ex(0)

/*
 * 回滚事务
 */
extern int  /* SQLCODE:PGSQL系统错误，常用见PG_OK等定义 */
pgc_rollback_ex(
        int conn_index              /* [IN] 连接索引 */
        );
#define pgc_rollback() pgc_rollback_ex(0)

/*
 * 执行非查询SQL语句
 */
extern int  /* SQLCODE:PGSQL系统错误，常用见PG_OK等定义 */
pgc_exec_ex(
        int conn_index,         /* [IN] 连接索引 */
        char *sql               /* [IN] 执行的SQL语句 */
        );
#define pgc_exec(_sql) pgc_exec_ex(0,_sql)

/*
 * 执行查询SQL语句
 */
extern int  /* SQLCODE:PGSQL系统错误，常用见PG_OK等定义 */
pgc_query_ex(
        int conn_index,         /* [IN] 连接索引 */
        char *sql,              /* [IN] 执行的SQL语句 */
        int request_row_num,        /* [IN] 需读取的记录数 */
        struct dbc_query_result_set *result_set  /* [OUT] 查询结果集 
                                               必须由pgc_query_free释放 */
        );
#define pgc_query(_sql,_request_row_num,_result_set)   \
pgc_query_ex(0,_sql,_request_row_num,_result_set)

/*
 * 获得seq的nextval值（多线程）
 */
extern int  /* SQLCODE:PGSQL系统错误，常用见PG_OK等定义 */
pgc_sequence_nextval_ex(
        int conn_index,         /* [IN] 连接索引 */
        char *seq,              /* [IN] sequence名 */
        long *nextval           /* [OUT] 获得的nextval值 */
        );
#define pgc_sequence_nextval(_seq,_nextval)   \
pgc_sequence_nextval_ex(0,_seq,_nextval)
#endif

__END_DECLS

#endif
